/**
 * 序列号装饰器
 *  序列号拦截器，封装到装饰器
 *  @UseInterceptors(new SerializeInterceptor(SigninUserDto))
 *
 * 使用
 *   @Serialize(xxxDto)
 */

import { UseInterceptors } from '@nestjs/common';
import { ClassConstructor } from 'class-transformer';
import { SerializeInterceptor } from '../interceptor/serialize.interceptor';

/**
 *
 * @param dto 序列化对象
 * @param defaultExclude 是否默认全部排除
 * @param options 自定义数据
 * @returns
 */
export function Serialize(
  dto: ClassConstructor<any>,
  defaultExclude: boolean = true, // 默认全部排除，@Expost() 才会生效,false,默认全部展示，设置@Exclude() 才会清除
  options: any = {}, // 自定义数据
) {
  return UseInterceptors(
    new SerializeInterceptor(dto, defaultExclude, options),
  );
}
